/*
 * Copyright 2013 University of Padua, Italy
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package it.dei.unipd.healthservice.resource;

/**
 * Rappresenta i dati di un cliente.
 * 
 * @author Simone Zennaro
 * @version 1.00
 */
public class Cliente {

	/**
	 * Cognome del Cliente
	 * NOTA: Presente solo per i clienti privati
	 */
	private final boolean isPrivato;
	
	/**
	 * Cognome del Cliente
	 * NOTA: Presente solo per i clienti privati
	 */
	private final String cognome;
	/**
	 * Nome del Cliente
	 * NOTA: Presente solo per i clienti privati
	 */
	private final String nome;
	/**
	 * Ragione Sociale del cliente
	 * NOTA: Presente solo per le aziende
	 */
	//private final String ragSociale;

	/**
	 * Codice Fiscale del cliente
	 */
	private final String cf;
	/**
	 * Partita Iva del cliente
	 */
	private final String pi;

	/**
	 * Indirizzo di fatturazione del cliente
	 */
	private final String indirizzo;
	/**
	 * CAP di fatturazione del cliente
	 */
	private final String cap;
	/**
	 * Città di fatturazione del cliente
	 */
	private final String citta;
	/**
	 * Provincia di fatturazione del cliente
	 */
	private final String provincia;
	/**
	 * Provincia di fatturazione del cliente
	 */
	private final String stato;
	/**
	 * telefono di fatturazione del cliente
	 */
	private final String telefono;
	/**
	 * email, valida per il login, del cliente
	 */
	private final String email;
	/**
	 * password del cliente
	 */
	private final String password;
	/**
	 * account verificato tramite conferma dell'email
	 */
	private final boolean confermato;
	/**
	 * Crea un nuovo cliente.
	 * 
	 * @param isPrivato
	 *            distingue tra cliente privato e azienda.
	 *            true=cliente privato
	 *            false=azienda
	 * @param cognome
	 *            cognome del cliente.
	 * @param nome
	 *            nome del cliente.
	 * @param cf
	 * 			  Codice Fiscale del Cliente privato
	 * @param pi
	 * 			  Partita Iva dell'azienda cliente
	 * @param indirizzo
	 * 			  indirizzo del cliente
	 * @param cap
	 * 			  CAP del cliente
	 * @param citta
	 * 			  città del cliente
	 * @param provincia
	 * 			  provincia del cliente
	 * @param stato
	 * 			  stato del cliente
	 * @param telefono
	 * 			  telefono del cliente
	 * @param email
	 * 			  email del cliente
	 * @param password
	 * 		 	  password di accesso del cliente
	 * @param confermato
	 * 		 	  indica lo stato di attivazione del cliente
	 */
	public Cliente(boolean isPrivato,String cognome,String nome,
			      String cf, String pi, String indirizzo, String cap, String citta,
			      String provincia, String stato, String telefono, String email, 
			      String password,boolean confermato) {
		this.isPrivato=isPrivato;
		this.cognome=cognome;
		this.nome=nome;

		this.cf=cf;
		this.pi=pi;
		this.indirizzo=indirizzo;
		this.cap=cap;
		this.citta=citta;
		this.provincia=provincia;
		this.stato=stato;
		this.telefono=telefono;
		this.email=email;
		this.password=password;
		this.confermato=confermato;
		
	}
	/**
	 * Crea un nuovo cliente.
	 * 
	 * @param email
	 * 			  email del cliente
	 * @param password
	 * 		 	  password di accesso del cliente
	 */
	public Cliente( String email,String password) {
		this(false,null,null,null,null,null,null,null,null,null,null,email,password,true);
		
		
		
	}
	/**
	 * Crea un nuovo cliente.
	 * 
	 * @param email
	 * 			  email del cliente

	 */
	public Cliente( String email) {
		this(false,null,null,null,null,null,null,null,null,null,null,email,null,true);
		
		
		
	}

	/**
	 * Restituisce la tipologia del cliente
	 * 
	 * @return tipologia del cliente
	 */
	public boolean getIsPrivato(){
		return isPrivato;
	}
	
	/**
	 * Restituisce il cognome del cliente
	 * 
	 * @return il cognome del cliente
	 */
	public String getCognome(){
		return cognome;
	}
	/**
	 * Restituisce il nome del cliente
	 * 
	 * @return il nome del cliente
	 */
	public String getNome(){
		return nome;
	}
	/**
	 * Restituisce la ragione sociale del cliente
	 * 
	 * @return la ragione sociale del cliente
	 */
	//public String getRagSociale(){
	//	return ragSociale;
	//}
	/**
	 * Restituisce il C.F. del cliente
	 * 
	 * @return il C.F. del cliente
	 */
	public String getCf(){
		return cf;
	}
	/**
	 * Restituisce la P.I. del cliente
	 * 
	 * @return la P.I. del cliente
	 */
	public String getPi(){
		return pi;
	}
	/**
	 * Restituisce l'indirizzo del cliente
	 * 
	 * @return l'indirizzo del cliente
	 */
	public String getIndirizzo(){
		return indirizzo;
	}
	/**
	 * Restituisce il CAP del cliente
	 * 
	 * @return il CAP del cliente
	 */
	public String getCap(){
		return cap;
	}
	/**
	 * Restituisce la città del cliente
	 * 
	 * @return la città del cliente
	 */
	public String getCitta(){
		return citta;
	}
	/**
	 * Restituisce la provincia del cliente
	 * 
	 * @return la provincia del cliente
	 */
	public String getProvincia(){
		return provincia;
	}
	/**
	 * Restituisce lo stato del cliente
	 * 
	 * @return lo stato del cliente
	 */
	public String getStato(){
		return stato;
	}
	/**
	 * Restituisce il telefono del cliente
	 * 
	 * @return il telefono del cliente
	 */
	public String getTelefono(){
		return telefono;
	}
	/**
	 * Restituisce l'email del cliente
	 * 
	 * @return l'email del cliente
	 */
	public String getEmail(){
		return email;
	}
	/**
	 * Restituisce la password del cliente
	 * 
	 * @return la password del cliente
	 */
	public String getPassword(){
		return password;
	}
	/**
	 * Restituisce lo stato di attivazione del cliente; se ritorna true il cliente ha già
	 * confermato la propria email
	 * 
	 * @return stato di attivazione del cliente
	 */
	public boolean getConfermato(){
		return confermato;
	}

}
